}
-static inline void invalidate_shadow_ldt(void)
+static inline void invalidate_shadow_ldt(struct domain *d)
{
- struct domain *d = current;
if ( d->mm.shadow_ldt_mapcnt != 0 )
__invalidate_shadow_ldt(d);
}
if ( unlikely(((page->type_and_flags & PGT_type_mask) ==
PGT_ldt_page)) &&
unlikely(((page->type_and_flags & PGT_count_mask) != 0)) )
- invalidate_shadow_ldt();
+ invalidate_shadow_ldt(page->u.domain);
put_page(page);
}
}
okay = get_page_and_type_from_pagenr(pfn, PGT_l2_page_table, d);
if ( likely(okay) )
{
- invalidate_shadow_ldt();
+ invalidate_shadow_ldt(d);
percpu_info[cpu].deferred_ops &= ~DOP_FLUSH_TLB;
old_base_pfn = pagetable_val(d->mm.pagetable) >> PAGE_SHIFT;
else if ( (d->mm.ldt_ents != ents) ||
(d->mm.ldt_base != ptr) )
{
- invalidate_shadow_ldt();
+ invalidate_shadow_ldt(d);
d->mm.ldt_base = ptr;
d->mm.ldt_ents = ents;
load_LDT(d);